In the design, production and management of industrial apparatus, projects, processes and software, difficulties are often caused by various uncontrolled or at least difficult-to-control internal interdependencies between different parts. In design and project management, internal interdependencies may arise e.g. when person A makes a plan Y for implementing a certain device or system. The plan Y is approved at a higher level C with certain corrections, whose implementation is delegated to person A except for a given detail, which is delegated to person B. Persons A and B are instructed to implement a solution they find best within the limitations specified by the higher level C. Thus, a change made by person B, in addition to affecting the final result, has an indirect effect on the decisions made by person A. Two interdependencies arise: ‘X depends on A and B’ and ‘A depends on B’. Problems are encountered when C (or B) does not inform A about the changes made by B.
In the treatment of large assemblies containing a plurality of variables, C may not necessarily even remember to tell A that the latter's decisions are now also dependent on decisions made by B. Such a situation can be regarded as an interdependency that is uncontrolled or at least difficult to control. Corresponding interdependencies between variables can be found in industrial processes and computer software alike.
In software development, models of the interdependencies between algorithms and databases have been created using various service definitions and interface descriptions. In creating models of such interdependencies, extensive use has been made of the client-server paradigm: A client utilises a service provided by a server in accordance with a defined interface. For example, in a situation where a server containing uncontrolled internal interdependencies serves a number of clients, a change made in the operation of the server to satisfy a given client may produce undesirable effects on operation-provided for another client.
To eliminate interdependencies from databases, numerous methods have been developed. One of these is normalisation of databases, about which there are many theories published in literature. An appropriately normalised database does not contain any uncontrolled internal interdependencies; each relation always contains a key which specifies the data elements contained in the relation—if the key data for the relation indirectly or together with another data item determines an attribute of the relation, then the relation has to be divided into several relations. In this case, the key data for each relation unambiguously and alone determines the result data produced by the relation.
Normalisation of databases only applies to the retrieval of existing data on the basis of certain key data. For instance, the output parameter 3 for input parameters 1 and 2 in the addition operation 1+2=3 would be retrieved from a normalised database which contains the sums produced by all possible input parameters. This type of structure which covers every possible combination of input parameters would not be practical or even possible in large processes or software due to the size required for the structure, the storage space it would take up and the difficulty or its modification. On the other hand, the client-server paradigm does not reduce the problems resulting from indistinct interdependencies, nor does it answer the question of how to control them.